package cn.org.xiaoweiba.graduationdesign.bookmall.po;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.io.Serial;
import java.io.Serializable;
import java.util.Date;

/**
 * 与用户信息表对应的 Java 类
 */
@AllArgsConstructor
@NoArgsConstructor
@Data
public class UserInfo implements Serializable {

    @Serial
    private static final long serialVersionUID = 1L;

    /**
     * 主键 id，使用雪花算法生成 id
     */
    @TableId(value = "id", type = IdType.ASSIGN_ID)
    private Long id;

    /**
     * 获取字符串形式的 id
     *
     * @return 字符串形式的 id
     */
    public String idStr() {
        return String.valueOf(id);
    }

    /**
     * 用户名 xwb_yyMMddHHmmssSSS4位随机数
     */
    @TableField("username")
    private String username;

    /**
     * 账号 xwb_yyMMddHHmmssSSS4位随机数
     */
    @TableField("account_number")
    private String accountNumber;

    /**
     * 用户密码 SHA256 加密盐
     */
    @TableField("salt")
    private String salt;

    /**
     * 用户密码
     */
    @TableField("password")
    private String password;

    /**
     * 邮箱
     */
    @TableField("mail")
    private String mail;

    /**
     * 头像图片访问路径
     */
    @TableField("head_url")
    private String headUrl;

    /**
     * 是否实名认证 1：实名认证 0：未实名认证
     */
    @TableField("is_authentication")
    private Boolean isAuthentication;

    /**
     * 是否认证为商家 1：认证通过 0：未认证
     */
    @TableField("is_business")
    private Boolean isBusiness;

    /**
     * 本次登录时间
     */
    @TableField("login_time")
    private Date loginTime;

    /**
     * 上一次(最近一次)登录时间
     */
    @TableField("last_login_time")
    private Date lastLoginTime;

    /**
     * 上一次修改用户名时间
     */
    @TableField("last_modify_username_time")
    private Date lastModifyUsernameTime;

    /**
     * 账号注册时间
     */
    @TableField("register_time")
    private Date registerTime;

    /**
     * 是否逻辑删除 1：删除 0：未删除
     */
    @TableField("is_delete")
    private Boolean isDelete;

}
